package leetcode.array;

import java.util.Arrays;

/**
 * @author Cheng Jun
 * Description: 给你一个整型数组 nums ，在数组中找出由三个数组成的最大乘积，并输出这个乘积。
 * 3 <= nums.length <= 10^4
 * -1000 <= nums[i] <= 1000
 * @version 1.0
 * @date 2022/8/8 14:35
 */
public class maximumProduct {
    public int maximumProduct(int[] nums) {
        // [1,2,3] 6
        // 正    正    正
        // 负... 负... 正
        Arrays.sort(nums);
        int max = nums[nums.length - 1];
        int twoProduct = 0;
        if (max > 0) {
            twoProduct = Math.max(nums[0] * nums[1], nums[nums.length - 2] * nums[nums.length - 3]);
        } else {
            twoProduct = Math.min(nums[0] * nums[1], nums[nums.length - 2] * nums[nums.length - 3]);
        }
        return max * twoProduct;
    }

    // 线性扫描，得到最大的三个数，和最小的两个数
    // https://leetcode.cn/problems/maximum-product-of-three-numbers/solution/san-ge-shu-de-zui-da-cheng-ji-by-leetcod-t9sb/
}
